查看原文
其他

【课程】8小时学透ARM体系架构

小月 Linux阅码场 2022-12-14

作为软件工程师,有没有下面的困惑:

  • 软件跑死了,定位到是cpu相关的问题,不知如何入手;

  • 内存访问出错,不知道如何查询页表属性;

  • 配置GIC时,group0/1, secure/non-secure,fiq/irq傻傻分不清;

  • 公司有昂贵的arm调试器,不知道能用来做什么。

  • 几千页的arm架构手册和arm cpu手册如同天书;
    。。。。。。

遇到上面问题千万别灰心,无数人都倒在了这里,不好走的这条路,我们陪你一起走。

如左耳朵耗子在《程序员练级攻略(2018)》所说,作为一个专业的程序员需要的学习的系统知识包括:体系结构,操作系统,网络协议

目前主流体系结构有x86,arm,risc-v等,x86有太多的历史包袱,过于复杂;而risc-v虽然快速发展,但是目前仅仅在MCU领域有实际应用,全面与arm竞争尚需时日。根据arm公司提供的数据,arm cpu在整个基础设施领域已经占到将近30%的份额(如下图)。

本课程从arm cpu架构入手,从arm指令集到内存管理到arm cpu,从单核到多核;紧贴ARM CPU手册(TRM)和系统架构手册(ARM ARM/ARMv8),由浅入深讲解32位和64位ARM CPU。

本课程既可以顺序学习整体提升你对arm cpu的理解,也可以针对具体问题学习具体章节。每章都有大小作业,可以在课程微信群讨论,多位arm专家长期驻群答疑。学习本ARM架构课程,近可以解决自己工作中遇到的ARM CPU具体问题,远可以触类旁通学习其它体系结构,为自己软件技术栈打下坚实的基础。

不需要任何ARM开发板,只需要一个可以运行Linux或docker的电脑,即可完成本课程所有实验和作业。

指导老师

张健_Bamvor

十年IT基础设施研发经验,其中6年Linux kernel一线研发经验,在suse,华为(17级),星际比特(技术合伙人)等公司工作。

作为团队核心成员参与了大陆第一个Cortex-A8 SOC芯片研发,负责CPU软件验证,操作系统移植等工作。

作为华为派驻到Linaro的技术专家,主导/参与多个Linux与arm架构相关特性研发(ILP32,continuous bit hint,kernel selftest等)

在拉斯维加斯,柏林,布达佩斯和北京多次发表技术演讲:

2014 Opensuse Asia Summit: openSUSE on ARM

2016 Linuxcon Europe: An efficient unit test and fuzz tools for kernel/libc porting

2016 Linaro Connect Las Vegas: LAS16-TR07: Working upstream [Mandarin]

2017 Linaro Connect Budapest: BUD17-305 - Implement contiguous page hint for anonymous page in user space. Slides

2018 Recent Kernel Update (Ubuntu Kylin18.04 meetup in Beijing). Slides


整体大纲
整体目标:突出arm架构内容,Linux本身的内容能不讲就不讲。
思路:从arm cpu架构入手,从arm指令集到内存管理到arm cpu,从单核到多核。

ARM architecture以Linux为例覆盖如下内容,目标是arm的问题知道去哪里查,PCB,SOC,ARM CPU还是ARM ARM:

  • Instruction set: 内核基本只用整数,浮点稍微提一下lazy restore;

  • Exeption model:重点是内核和用户空间,EL2和EL3不提;

  • memory;32和64的差异。

    • mmu

    • cache: PoU, PoC

  • Timer

  • GIC

  • Power on and reset: arm and SOC view.

  • coresight

    • debug

    • trace

  • mcu可以从与A系列差异入手,这部分需要加硬件调试器吧,顺别把arm coresight简单说下。




报名方法:


电脑浏览器访问yomocode.com(不支持手机访问),先点击网站右上角图标,微信扫码登录,然后在此链接报名:

http://www.yomocode.com/courses/6

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存